///************************************************************************
/// <copyrigth>2018-2019 Corporation.All Rights Reserved</copyrigth>
/// <author>tangyingzhong</author>
/// <contact>tangyz114987@outlook.com</contact>
/// <version>v1.0.0</version>
/// <describe>
/// Start the app's ui here
///</describe>
/// <date>2020/7/26</date>
///***********************************************************************
#ifndef SYSTEMUI_H
#define SYSTEMUI_H

#include "Base/PluginBase.h"
#include "MainUI/IFrameUI.h"
#include "View/ISystemUI.h"

class SystemUI :public PluginBase<ISystemUI>
{
public:
    // Construct the system ui
	SystemUI();

    // Destruct the system ui
    virtual ~SystemUI();

public:
	// Start the plugin
	virtual bool Start();

	// Stop the plugin
	virtual bool Stop();

	// Show the UI
	virtual bool ShowUI();

private:
	// Initialize the Test
	void Initialize();

	// Destory the Test
	void Destory();

    // Create main ui
    void CreateMainUI();

    // Destroy main ui
    void DestoryMainUI();

private:
	// Get file path
	inline String GetPluginFilePath() const
	{
		return m_strFilePath;
	}

	// Set file path
	inline void SetPluginFilePath(String strFilePath)
	{
		m_strFilePath = strFilePath;
	}

    // Get main ui
    inline IFrameUI* GetMainUI() const
    {
        return m_pMainUI;
    }

    // Set main ui
    inline void SetMainUI(IFrameUI* pUI)
    {
		m_pMainUI = pUI;
    }

	// Get the disposed status
	inline bool GetDisposed() const
	{
		return m_bDisposed;
	}

	// Set the disposed status
	inline void SetDisposed(bool bDisposed)
	{
		m_bDisposed = bDisposed;
	}

private:
	// Plugin info file path
	String m_strFilePath;

    // App's ui
	IFrameUI* m_pMainUI;

	// Disposed status
	bool m_bDisposed;
};

#endif // SYSTEMUI_H
